package mundomensajero.main;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class NoEnviadosView extends Activity {
	ListView lv;
    ArrayList<String> data = new ArrayList<String>();
    ArrayList<String> noEnviados = new ArrayList<String>();

    String mensaje,de;
    int cantTigo,cantClaro,cantMovistar,cantDigicel;
    ProgressDialog progDailog1,progDailog2,progDailog3,progDailog4;//tigo,claro,movistar,digicel
    
    public ArrayList<DestinatarioData> destinatarios = new ArrayList<DestinatarioData>();
    
    final int TIGO=R.drawable.tigo_logo;
    final int CLARO=R.drawable.claro_logo;
    final int DIGICEL=R.drawable.digicel_logo;
    final int MOVISTAR=R.drawable.movistar_logo;
    
    ArrayList<String> tigo = new ArrayList<String>();
	ArrayList<String> claro = new ArrayList<String>();
	ArrayList<String> movistar = new ArrayList<String>();
	ArrayList<String> digicel = new ArrayList<String>();
	
	static public boolean ejecutandoseTigo,ejecutandoseClaro,ejecutandoseMovistar,ejecutandoseDigicel=false;//variables que nos indicaran si los hilos terminaron
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_viewnoenviados);
        lv = (ListView)findViewById(R.id.LstNoEnviados);
        
        sacarData();
        
        if(data.isEmpty()){
        	AlertDialog alertDialog = new AlertDialog.Builder(NoEnviadosView.this).create();
            alertDialog.setTitle("Éxito al Enviar");
            alertDialog.setMessage("Se enviaron todos los mensajes");
            alertDialog.setIcon(R.drawable.exito_envio);
            alertDialog.setButton("Aceptar", new DialogInterface.OnClickListener() {
            	public void onClick(DialogInterface dialog, int which) {
            		finish();
           	}
            });
            alertDialog.show();
            return;        	
        }

        AdaptadorNoEnviados adaptador = new AdaptadorNoEnviados(this);
        
        lv.setAdapter(adaptador);
    }   
    
    public void onClickCancelar(View b){
    	Intent principal = new Intent();
		principal.setClass(this,MundoMensajero_Activity.class);
		finish();
    }
    
    public void onClickReintentar(View b){    	
    	for(int i=0; i<data.size();i++){
    		if(data.get(i).length()>8)
    			destinatarios.add(new DestinatarioData(data.get(i).split("\n")[0],data.get(i).split("\n")[1] , true));
    		else
    			destinatarios.add(new DestinatarioData("",data.get(i).split("\n")[0] , true));
    	}
    	reintentar();
    	
    }
    
    private void sacarData(){
    	String dat[];
    	Bundle bundle=getIntent().getExtras();
        ArrayList<String> dest = bundle.getStringArrayList("noEnviados");
        for(int i=0; i<dest.size(); i++){
        	dat = dest.get(i).split("-");
        	if(dat[1].equals("MSJ")){
        		mensaje = dat[0];
        		continue;
        	}
        	if(dat[1].equals("DE")){
        		de = dat[0];
        		continue;
        	}
        	if(dat[0].equals("")) data.add(dat[1]);
        	else data.add(dat[0]+"\n"+dat[1]);
    	}
    }

    
    public void onClickRegresar(View Button){
    	Intent principal = new Intent();
		principal.setClass(this,MundoMensajero_Activity.class);

		setResult(RESULT_OK, principal);
		finish();
    }
    
    private class AdaptadorNoEnviados extends BaseAdapter {
    	Activity context;

    	AdaptadorNoEnviados(Activity context) {
    		super();
    		this.context = context;
    	}
    	
    	public int getCount() {
    		return data.size();
    	}
    	 
    	public String getItem(int position) {
    		return data.get(position).toString();
    	}
    	 
    	public long getItemId(int position) {
    		return position;
    	}
    	 
    	public View getView(final int position, View convertView, ViewGroup parent) {
    		LayoutInflater inflater = context.getLayoutInflater();
    		View item = inflater.inflate(R.layout.noenviados, null);
    		
    		final TextView lbl = (TextView)item.findViewById(R.id.lblNoEnviado);
    		ImageView img = (ImageView)item.findViewById(R.id.imgLogoNoEnviado);
    		
    		if(data.get(position).length()>8)
    			img.setImageResource(identificarCompania(data.get(position).split("\n")[1]));
    		else
    			img.setImageResource(identificarCompania(data.get(position)));
    		
    		lbl.setText(data.get(position));
    		return item;
    	}
    	 
    	}
    	
    	@Override
        public boolean onKeyDown(int keyCode, KeyEvent event){   
        	
        	if(keyCode == KeyEvent.KEYCODE_BACK){
        		onClickRegresar(null);
        		return true;
        	}
    		return super.onKeyDown(keyCode, event);
        }
    	
    	public int identificarCompania(String number){	    	
    	   	int n;
			String num = number.substring(0,4);
			n = Integer.parseInt(num);
			
			if(((n>=7000)&&(n<=7099))||		     
			     ((n>=7600)&&(n<=7669))||
			     ((n>=7687)&&(n<=7690))||
			     ((n>=7740)&&(n<=7759))||
			     ((n>=7805)&&(n<=7809))||
			     ((n>=7840)&&(n<=7844))||
			     ((n>=7850)&&(n<=7869))||
			     ((n>=7950)&&(n<=7969))||
			     ((n>=7985)&&(n<=7989))){
					return CLARO;		
			}
								
			if(((n>=7300)&&(n<=7399))||		    			   
				((n>=7400)&&(n<=7449))||			   						   
				((n>=7460)&&(n<=7469))||
				((n>=7695)&&(n<=7698))||
				((n>=7760)&&(n<=7779))||
				((n>=7970)&&(n<=7979))){
				 return DIGICEL;			 
			}
		
			if(((n>=7100)&&(n<=7199))||
				  ((n>=7450)&&(n<=7459))||
				  ((n>=7691)&&(n<=7694))||
			      ((n>=7700)&&(n<=7719))||
			      ((n>=7780)&&(n<=7784))||
			      ((n>=7790)&&(n<=7794))||
			      ((n>=7810)&&(n<=7839))||
			      ((n>=7845)&&(n<=7849))||
			      ((n>=7990)&&(n<=7999))){
				return MOVISTAR;
			}
			
			if(((n>=7200)&&(n<=7299))||
			     ((n>=7470)&&(n<=7499))||
			     ((n>=7500)&&(n<=7599))||			     
			     ((n>=7670)&&(n<=7679))||
			     ((n>=7680)&&(n<=7683))||
			     ((n>=7720)&&(n<=7739))||
			     ((n>=7785)&&(n<=7789))||
			     ((n>=7795)&&(n<=7799))||
			     ((n>=7870)&&(n<=7899))||
			     ((n>=7900)&&(n<=7949))){
					return TIGO;

				}
			return -1;		    	
    	}


    	public boolean networkAvailable() {
    		Context context = getApplicationContext();
    		ConnectivityManager connectMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    		if (connectMgr != null) {
    			NetworkInfo[] netInfo = connectMgr.getAllNetworkInfo();
    			if (netInfo != null) {
    				for (NetworkInfo net : netInfo) {
    					if (net.getState() == NetworkInfo.State.CONNECTED) {
    						return true;
    					}
    				}
    			}
    		} 
    		return false;
    	}
    	 
    void reintentar(){
    	if(!networkAvailable()){
    		AlertDialog alertDialog = new AlertDialog.Builder(NoEnviadosView.this).create();
            alertDialog.setTitle("Sin Conexión");
            alertDialog.setMessage("No se puede hacer el envío sin conexión a internet");
            alertDialog.setIcon(R.drawable.warningtoast);
            alertDialog.setButton("Aceptar", new DialogInterface.OnClickListener() {
            	public void onClick(DialogInterface dialog, int which) {
           	}
            });
            alertDialog.show();
            return;
    	}
    	
    	
    	String info;
     	noEnviados.clear();
     	
     	if(destinatarios.size()==1) info = "Enviando mensaje...";
     	else info = "Enviando mensajes...";
     	
     	for(int i=0; i<destinatarios.size(); i++){
     		switch (identificarCompania(destinatarios.get(i).getNumero())) {
     			case TIGO:
     				tigo.add(destinatarios.get(i).getNombre()+"-"+destinatarios.get(i).getNumero());
 				break;
     			case CLARO:
     				claro.add(destinatarios.get(i).getNombre()+"-"+destinatarios.get(i).getNumero());
     			break;
     			case MOVISTAR:
     				movistar.add(destinatarios.get(i).getNombre()+"-"+destinatarios.get(i).getNumero());
     			break;
     			case DIGICEL:
     				digicel.add(destinatarios.get(i).getNombre()+"-"+destinatarios.get(i).getNumero());
     			break;
 			}
     	}
     	cantTigo = tigo.size();
     	cantClaro = claro.size();
     	cantMovistar = movistar.size();
     	cantDigicel =  digicel.size();
     	destinatarios.clear();

     	/**									ENVIO A TIGO									  **/
    	/**===================================================================================**/
    	if(tigo.size()>0){
    		ejecutandoseTigo=true;
    		progDailog1 = ProgressDialog.show(this, "",info, false);
			new Thread() {//TIGO

				public void run(){
					String id,consulta="";
					boolean fallo=false;
					int t;
					for(int m=0; m<tigo.size();m++){
						if(mensaje.length()<150){
							id = enviarMensaje(tigo.get(m).split("-")[1],mensaje);
							t=0;
							do{
								if(t>15) break;//si ya pasaron mas de 10 segundos salimos
								try {
									t+=2;
									sleep(2000);
								} catch (InterruptedException e) {}
								consulta = consultarEnvio(id);
							}while(consulta.equals("PROCESANDO"));
							if(t>15 && !consulta.equals("PROCESANDO")){//Si t>15 es porque pasaron los 10seg y no se envio el msj
								noEnviados.add(tigo.get(m));
								fallo=true;
							}
						}
						else{//Si tiene mas de 150, partimos el mensaje de 0 a 100 y de 90 a 180
							id = enviarMensaje(tigo.get(m).split("-")[1],mensaje.substring(0, 100));
							t=0;
							do{
								if(t>15) break;//si ya pasaron mas de 10 segundos salimos
								try {
									t+=2;
									sleep(2000);
								} catch (InterruptedException e) {}
								consulta = consultarEnvio(id);
							}while(consulta.equals("PROCESANDO"));
							if(t>15 && !consulta.equals("PROCESANDO")){//Si falla al envair el primero, no enviamos el segundo
								noEnviados.add(tigo.get(m));
								fallo=true;
								continue;
							}
							id = enviarMensaje(tigo.get(m).split("-")[1],mensaje.substring(85, mensaje.length()));
							t=0;
							do{
								if(t>15) break;//si ya pasaron mas de 10 segundos salimos
								try {
									t+=2;
									sleep(2000);
								} catch (InterruptedException e) {}
								consulta = consultarEnvio(id);
							}while(consulta.equals("PROCESANDO"));
							
						}
					}
					if(!fallo) handler.sendEmptyMessage(TIGO);
					progDailog1.dismiss();
					ejecutandoseTigo=false;
				}
			}.start(); 
			
    	}
    	
    	/**									ENVIO A CLARO									  **/
    	/**===================================================================================**/
    	if(claro.size()>0){
    		ejecutandoseClaro = true;
    		progDailog2 = ProgressDialog.show(this, "",info, false);
    		new Thread() {//CLARO
				public void run(){
					String id,consulta="";
					boolean fallo=false;
					int t;
					for(int m=0; m<claro.size();m++){
						if(mensaje.length()<95){
							id = enviarMensaje(claro.get(m).split("-")[1],mensaje);
							t=0;
							do{
								if(t>15) break;//si ya pasaron mas de 10 segundos salimos
								try {
									t+=2;
									sleep(2000);
								} catch (InterruptedException e) {}
								consulta = consultarEnvio(id);
							}while(consulta.equals("PROCESANDO"));
							if(t>15 && !consulta.equals("PROCESANDO")){//Si t>10 es porque pasaron los 10seg y no se envio el msj
								noEnviados.add(claro.get(m));
								fallo=true;
							}
						}
						else{//Si tiene mas de 94, partimos el mensaje de 0 a 94 y de 86 a 180
							id = enviarMensaje(claro.get(m).split("-")[1],mensaje.substring(0, 94));
							t=0;
							do{
								if(t>15) break;//si ya pasaron mas de 10 segundos salimos
								try {
									t+=2;
									sleep(2000);
								} catch (InterruptedException e) {}
								consulta = consultarEnvio(id);
							}while(consulta.equals("PROCESANDO"));
							if(t>15 && !consulta.equals("PROCESANDO")){//Si falla al envair el primero, no enviamos el segundo
								noEnviados.add(claro.get(m));
								fallo=true;
								continue;
							}							
							id = enviarMensaje(claro.get(m).split("-")[1],mensaje.substring(86,mensaje.length()));
							t=0;
							do{
								if(t>15) break;//si ya pasaron mas de 10 segundos salimos
								try {
									t+=2;
									sleep(2000);
								} catch (InterruptedException e) {}
								consulta = consultarEnvio(id);
							}while(consulta.equals("PROCESANDO"));
							
						}
					}
					if(!fallo)handler.sendEmptyMessage(CLARO);
					progDailog2.dismiss();
					ejecutandoseClaro=false;
				}
			}.start();
    	}
    	
    	/**									ENVIO A MOVISTAR									  **/
    	/**===================================================================================**/
    	if(movistar.size()>0){
    		ejecutandoseMovistar=true;
    		progDailog3 = ProgressDialog.show(this, "",info, false);
    		new Thread() {//MOVISTAR
				public void run(){
					String nombre,id,consulta="";
					boolean fallo=false;
					int t;
					for(int m=0; m<movistar.size();m++){
						if((mensaje.length()+de.length())<120){
							id = enviarMensajeMovistar(movistar.get(m).split("-")[1],mensaje,de);
							t=0;
							do{
								if(t>15) break;//si ya pasaron mas de 10 segundos salimos
								try {
									t+=2;
									sleep(2000);
								} catch (InterruptedException e) {}
								consulta = consultarEnvio(id);//consultarENvio devolvera: PROCESANDO,ENVIADO,NO ENVIADO
							}while(consulta.equals("PROCESANDO"));
							if(t>15){//Si t>10 es porque pasaron los 10seg y no se envio el msj
								noEnviados.add(movistar.get(m));
								fallo=true;
							}
						}
						else{//Si tiene mas de 120, partimos el mensaje de 0 a 100 y de 90 a 180
							if(de.length()>20) nombre = de.substring(0, 20);
							else nombre = de;
							id = enviarMensajeMovistar(movistar.get(m).split("-")[1],mensaje.substring(0, 100),nombre);
							t=0;
							do{
								if(t>15) break;//si ya pasaron mas de 10 segundos salimos
								try {
									t+=2;
									sleep(2000);
								} catch (InterruptedException e) {}
								consulta = consultarEnvio(id);
							}while(consulta.equals("PROCESANDO"));
							if(t>15 && !consulta.equals("PROCESANDO")){//Si falla al envair el primero, no enviamos el segundo
								noEnviados.add(movistar.get(m));
								fallo=true;
								continue;
							}
							id = enviarMensajeMovistar(movistar.get(m).split("-")[1],mensaje.substring(90, mensaje.length()),nombre);
							t=0;
							do{
								if(t>15) break;//si ya pasaron mas de 10 segundos salimos
								try {
									t+=2;
									sleep(2000);
								} catch (InterruptedException e) {}
								consulta = consultarEnvio(id);
							}while(consulta.equals("PROCESANDO"));
							
						}
					}
					if(!fallo) handler.sendEmptyMessage(MOVISTAR);
					progDailog3.dismiss();
					ejecutandoseMovistar = false;
				}
			}.start();
    	}
    	/**									ENVIO A DIGICEL									  **/
    	/**===================================================================================**/
    	if(digicel.size()>0){
    		ejecutandoseDigicel = true;
    		progDailog4 = ProgressDialog.show(this, "",info, false);
    		new Thread() {//CLARO
				public void run(){
					String id,consulta="";
					boolean fallo=false;
					int t;
					for(int m=0; m<digicel.size();m++){
						if(mensaje.length()<120){
							id = enviarMensaje(digicel.get(m).split("-")[1],mensaje);
							t=0;
							do{
								if(t>15) break;//si ya pasaron mas de 10 segundos salimos
								try {
									t+=2;
									sleep(2000);
								} catch (InterruptedException e) {}
								consulta = consultarEnvio(id);
							}while(consulta.equals("PROCESANDO"));
							if(t>15 && !consulta.equals("PROCESANDO")){//Si t>10 es porque pasaron los 10seg y no se envio el msj
								noEnviados.add(digicel.get(m));
								fallo=true;
							}
						}
						else{//Si tiene mas de 94, partimos el mensaje de 0 a 94 y de 86 a 180
							id = enviarMensaje(digicel.get(m).split("-")[1],mensaje.substring(0, 100));
							t=0;
							do{
								if(t>15) break;//si ya pasaron mas de 10 segundos salimos
								try {
									t+=2;
									sleep(2000);
								} catch (InterruptedException e) {}
								consulta = consultarEnvio(id);
							}while(consulta.equals("PROCESANDO"));
							if(t>15 && !consulta.equals("PROCESANDO")){//Si falla al envair el primero, no enviamos el segundo
								noEnviados.add(digicel.get(m));
								fallo=true;
								continue;
							}
							id = enviarMensaje(digicel.get(m).split("-")[1],mensaje.substring(90,mensaje.length()));
							t=0;
							do{
								if(t>15) break;//si ya pasaron mas de 10 segundos salimos
								try {
									t+=2;
									sleep(2000);
								} catch (InterruptedException e) {}
								consulta = consultarEnvio(id);
							}while(consulta.equals("PROCESANDO"));
						}
					}
					if(!fallo)handler.sendEmptyMessage(DIGICEL);
					progDailog4.dismiss();
					ejecutandoseDigicel=false;
				}
			}.start();
    	}
     	     	
     	new Hilo().start();
     	
     }
     
     public class Hilo extends Thread{
     	public void run(){
     		while(ejecutandoseTigo || ejecutandoseClaro || ejecutandoseDigicel || ejecutandoseMovistar){
     			try {Thread.sleep(500);}
     			catch (InterruptedException e) {}
     		}
     		if(!noEnviados.isEmpty()) lanzarNotificacion(false);//fallo
     		else lanzarNotificacion(true);//exito
     		finish();
     	}
     }
         
     private Handler handler = new Handler() {
     	@Override
     	public void handleMessage(Message msg) {
     		switch(msg.what){
     		case TIGO: if(cantTigo>1) msj(R.drawable.notitigo_logo, "Se enviaron los mensajes a TIGO");
     					else msj(R.drawable.notitigo_logo, "Se envió el mensaje a TIGO");
     		break;
     		case CLARO:if(cantClaro>1) msj(R.drawable.noticlaro_logo, "Se enviaron los mensajes a CLARO");
 						else msj(R.drawable.noticlaro_logo, "Se envió el mensaje a CLARO");
     		break;
     		case MOVISTAR: if(cantMovistar>1) msj(R.drawable.notimovistar_logo, "Se enviaron los mensajes a MOVISTAR");
 							else msj(R.drawable.notimovistar_logo, "Se envió el mensaje a MOVISTAR");
     		break;
     		case DIGICEL: 	if(cantDigicel>1) msj(R.drawable.notidigicel_logo, "Se enviaron los mensajes a DIGICEL");
 							else msj(R.drawable.notidigicel_logo, "Se envió el mensaje a DIGICEL");
     		break;
     		}
     	}
     };
     
     public void msj(int resId,String s){//Muestra Toast personalizado, con el String s y el icono resId
  	   Toast t = new Toast(this);
         LayoutInflater inflater = getLayoutInflater();
         View layout = inflater.inflate(R.layout.custom_toast,(ViewGroup) findViewById(R.id.lytoast));
  
         TextView txt = (TextView)layout.findViewById(R.id.txtToast);
         txt.setText(s);
         ImageView img = (ImageView)layout.findViewById(R.id.imgToast);
         img.setImageResource(resId);
  
         t.setDuration(Toast.LENGTH_SHORT);
         t.setView(layout);
         t.show();
 		}

     String enviarMensajeMovistar(String num,String msg,String de){
    	   	String cad1[],cad2[] = null;
    	   	BufferedReader in = null;
    	   	msg = msg.replace("ñ", "n");
    	   	msg = msg.replace("á", "a");
    	   	msg = msg.replace("é", "e");
    	   	msg = msg.replace("í", "i");
    	   	msg = msg.replace("ó", "o");
    	   	msg = msg.replace("ú", "u");
   	    	try {
   	    		HttpClient client = new DefaultHttpClient();
   	    		HttpPost request = new HttpPost("http://www.nubemensajera.com/send");
   	    		List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
 	            postParameters.add(new BasicNameValuePair("from", de));
 	            postParameters.add(new BasicNameValuePair("to", num));
 	            postParameters.add(new BasicNameValuePair("message", msg));
 	            UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);
 	            request.setEntity(formEntity);
 	            HttpResponse response = client.execute(request);
 	            
 	            in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
 	            StringBuffer sb = new StringBuffer("");
 	            String line = "";
 	            String NL = System.getProperty("line.separator");
 	            
 	            while ((line = in.readLine()) != null) {
 	                sb.append(line + NL);
 	            }
 	            in.close();
 	            String result = sb.toString();
 	            cad1 = result.split(",");
 	            cad2 = cad1[0].split(":");
   	    	}catch (UnsupportedEncodingException e) {
 				e.printStackTrace();
 			}catch (ClientProtocolException e) {
 				e.printStackTrace();
 			}catch (IOException e) {
 				e.printStackTrace();
 			}finally {
 	            if (in != null){
 	                try {
 	                    in.close();
 	                    }catch (IOException e) {e.printStackTrace();}
 	            }
 			}
   	    	return cad2[1];//retornamos el ID
    	   
       }
     
     String enviarMensaje(String num,String msg){
 	   	String cad1[],cad2[] = null;
 	   	BufferedReader in = null;
 	   	msg = msg.replace("ñ", "n");
	   	msg = msg.replace("á", "a");
	   	msg = msg.replace("é", "e");
	   	msg = msg.replace("í", "i");
	   	msg = msg.replace("ó", "o");
	   	msg = msg.replace("ú", "u");
	    	try {
	    		HttpClient client = new DefaultHttpClient();
	    		HttpPost request = new HttpPost("http://www.nubemensajera.com/send");
	    		List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
	            postParameters.add(new BasicNameValuePair("from", de));
	            postParameters.add(new BasicNameValuePair("to", num));
	            postParameters.add(new BasicNameValuePair("message", msg));
	            UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);
	            request.setEntity(formEntity);
	            HttpResponse response = client.execute(request);
	            
	            in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
	            StringBuffer sb = new StringBuffer("");
	            String line = "";
	            String NL = System.getProperty("line.separator");
	            
	            while ((line = in.readLine()) != null) {
	                sb.append(line + NL);
	            }
	            in.close();
	            String result = sb.toString();
	            cad1 = result.split(",");
	            cad2 = cad1[0].split(":");
	    	}catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}catch (ClientProtocolException e) {
				e.printStackTrace();
			}catch (IOException e) {
				e.printStackTrace();
			}finally {
	            if (in != null){
	                try {
	                    in.close();
	                    }catch (IOException e) {e.printStackTrace();}
	            }
			}
	    	return cad2[1];//retornamos el ID
 	   
    }

     String consultarEnvio(String id){
  	   BufferedReader in = null;  
  	   String cad1[],cad2[] = null;
  	   try {
	    		HttpClient client = new DefaultHttpClient();	            
	            HttpGet request = new HttpGet("http://www.nubemensajera.com/status/"+id);
	            HttpResponse response = client.execute(request);
	            
	            in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
	            StringBuffer sb = new StringBuffer("");
	            String line = "";
	            String NL = System.getProperty("line.separator");
	            
	            while ((line = in.readLine()) != null) {
	                sb.append(line + NL);
	            }
	            in.close();
	            String result = sb.toString();
	            
	            if(result.length()>50) return "";
	            
	            cad1 = result.split(",");
	            cad2 = cad1[1].split(":");
	            cad2[1] = cad2[1].substring(1,cad2[1].length()-3);
	            
	    	}catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}catch (ClientProtocolException e) {
				e.printStackTrace();
			}catch (IOException e) {
				e.printStackTrace();
			}finally {
	            if (in != null){
	                try {
	                    in.close();
	                    }catch (IOException e) {e.printStackTrace();}
	            }
			}
	    	return cad2[1];
  	   
     }
     
     void lanzarNotificacion(boolean exito){
			String ns = Context.NOTIFICATION_SERVICE;
			NotificationManager notManager = (NotificationManager) getSystemService(ns);
			
			//Configuramos la notificacion
			int icono;
			if(exito) icono = R.drawable.exito_envio;
			else icono = R.drawable.error_envio;
			CharSequence textoEstado = "Mundo Mensajero";
			long hora = System.currentTimeMillis();

			Notification notif = new Notification(icono, textoEstado, hora);
			
			//Configuramos el Intent
			Context contexto = NoEnviadosView.this;
			CharSequence titulo = "Mundo Mensajero";
			CharSequence descripcion;

			if(exito)
				if((cantClaro+cantDigicel+cantMovistar+cantTigo)>1)
					descripcion = "Se enviaron exitosamente los mensajes";
				else
					descripcion = "Se envió exitosamente el mensaje";
			else
				if((cantClaro+cantDigicel+cantMovistar+cantTigo)>1)
					descripcion = "No se enviaron algunos mensajes";
				else
					descripcion = "No se pudo enviar el mensaje";

			Intent notIntent;
			if(exito) notIntent = new Intent(contexto,MundoMensajero_Activity.class);
			else notIntent = new Intent(contexto,NoEnviadosView.class);

			Bundle b = new Bundle();
			noEnviados.add(de+"-DE");
			noEnviados.add(mensaje+"-MSJ");
	    	b.putStringArrayList("noEnviados", noEnviados);
	    	notIntent.putExtras(b);
	    	
	    	PendingIntent contIntent = PendingIntent.getActivity(contexto, 0, notIntent, 0);

			notif.setLatestEventInfo(contexto, titulo, descripcion, contIntent);
			
			notif.flags |= Notification.FLAG_AUTO_CANCEL;
			notif.defaults |= Notification.DEFAULT_VIBRATE;
			
			notManager.notify(1, notif);
			
		}
     
    	 
}
